package study;

import java.util.Random;

/**
 * Random 类诞生于 JDK 1.0，它产生的随机数是伪随机数，也就是有规则的随机数
 * Random 使用的随机算法为 linear congruential pseudorandom number generator (LGC) 线性同余法伪随机数
 * 在随机数生成时，随机算法的起源数字称为种子数（seed），在种子数的基础上进行一定的变换，从而产生需要的随机数字
 * Random 对象在种子数相同的情况下，相同次数生成的随机数是相同的
 * 比如两个种子数相同的 Random 对象，第一次生成的随机数字完全相同，第二次生成的随机数字也完全相同
 * 默认情况下 new Random() 使用的是当前纳秒时间作为种子数的
 * Random 是线程安全的
 * */
public class RandomDemo {
	public static void main(String[] args) {
		Random random = new Random();
		for (int i = 0; i < 10; i++) {
			// 生成 0-9 随机整数
			int number = random.nextInt(10);
			System.out.println("生成随机数：" + number);
		}
		System.out.println("\n\n");
		for (int i = 0; i < 10; i++) {
			// 生成 100-199 随机整数
			int number = random.nextInt(100) + 100;
			System.out.println("生成随机数：" + number);
		}
		System.out.println("\n\n");
		for (int i = 0; i < 10; i++) {
			// 生成 100-199 随机浮点数
			double number = random.nextDouble() * 100 + 100;
			System.out.println("生成随机数：" + number);
		}
	}
}
